#ifndef SKILL_H_INCLUDED
#define SKILL_H_INCLUDED

#include "buff.h"

class Player;

class Skill
{
public:
    Skill(Player* _player, const int& cd, const double& scA, const double& scD, const double& scS, const double& scL, const double& scDI);
    ~Skill();

    void makeBuff(const int& dur, const std::string& cancelID);
    void setBuff(Bufftype btype, const int& strength);
    void setName(const std::string& desc) { name = desc; }

    bool onCooldown() const { return currentCooldown > 0; }
    int getCooldown() const { return currentCooldown; }
    double getDamage() const;
    std::string getName() const { return name; }

    void activate();
    void tick();
private:
    Player* playerChar;
    std::string name;
    int cooldown;
    int currentCooldown;
    double scAttack;
    double scDefense;
    double scSpeed;
    double scLevel;
    double scDefIgnore;
    Buff* selfBuff;
};

#endif // SKILL_H_INCLUDED
